home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 37 / IOPROG_37.ISO / SOFT / Multilizer.exe / disk1 / data1.cab / data1 / [Group9]VCL Source Standard / ivtard16.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-12  |  5.3 KB  |  195 lines

  1. unit IvTarD16;
  2.  
  3. {$I IVMULTI.INC}
  4.  
  5. interface
  6.  
  7. uses
  8. {$IFDEF WIN32}
  9.   Windows,
  10. {$ELSE}
  11.   WinTypes, WinProcs,
  12. {$ENDIF}
  13.   Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
  14.   IvMulti, IvTargD;
  15.  
  16. type
  17.   TIvTargetPropertiesDialog = class(TForm)
  18.     OKButton: TButton;
  19.     CancelButton: TButton;
  20.     List: TListBox;
  21.     AddButton: TButton;
  22.     RemoveButton: TButton;
  23.     EditButton: TButton;
  24.     ClassLabel: TLabel;
  25.     PropertyLabel: TLabel;
  26.     AddDefaultButton: TButton;
  27.     AddAllButton: TButton;
  28.     Label1: TLabel;
  29.     procedure AddButtonClick(Sender: TObject);
  30.     procedure EditButtonClick(Sender: TObject);
  31.     procedure RemoveButtonClick(Sender: TObject);
  32.     procedure UpdateButtons(Sender: TObject);
  33.     procedure ListDrawItem(Control: TWinControl; Index: Integer;
  34.       Rect: TRect; State: TOwnerDrawState);
  35.     procedure AddDefaultButtonClick(Sender: TObject);
  36.     procedure AddAllButtonClick(Sender: TObject);
  37.  
  38.   private
  39.     function GetItem(i: Integer): TIvTargetProperty;
  40.  
  41.     procedure AddItem(item: TIvTargetProperty);
  42.     procedure AddNew(
  43.       const targetClassName, targetPropertyName: String;
  44.       targetType: TIvTargetType);
  45.  
  46.   public
  47.     procedure GetItems(items: TIvTargetProperties);
  48.     procedure SetItems(items: TIvTargetProperties);
  49.  
  50.     property Items[i: Integer]: TIvTargetProperty read GetItem;
  51.   end;
  52.  
  53. implementation
  54.  
  55. {$R *.DFM}
  56.  
  57. function TIvTargetPropertiesDialog.GetItem(i: Integer): TIvTargetProperty;
  58. begin
  59.   Result := List.Items.Objects[i] as TIvTargetProperty;
  60. end;
  61.  
  62. procedure TIvTargetPropertiesDialog.GetItems(items: TIvTargetProperties);
  63. var
  64.   i: Integer;
  65. begin
  66.   for i := 0 to List.Items.Count - 1 do
  67.     items.Add(Self.Items[i].Copy);
  68. end;
  69.  
  70. procedure TIvTargetPropertiesDialog.SetItems(items: TIvTargetProperties);
  71. var
  72.   i: Integer;
  73. begin
  74.   for i := 0 to items.Count - 1 do
  75.     AddItem(items[i].Copy);
  76.   UpdateButtons(Self);
  77. end;
  78.  
  79. procedure TIvTargetPropertiesDialog.AddItem(item: TIvTargetProperty);
  80. begin
  81.   List.Items.AddObject('', item);
  82. end;
  83.  
  84. procedure TIvTargetPropertiesDialog.AddButtonClick(Sender: TObject);
  85. var
  86.   dialog: TIvTargetPropertyDialog;
  87. begin
  88.   dialog := TIvTargetPropertyDialog.Create(nil);
  89.   if dialog.ShowModal = mrOk then
  90.   begin
  91.     AddItem(TIvTargetProperty.Create(
  92.       dialog.ClassNameEdit.Text,
  93.       dialog.PropertyNameEdit.Text,
  94.       TIvTargetType(dialog.TypeRadio.ItemIndex)));
  95.     UpdateButtons(Self);
  96.   end;
  97.   dialog.Free;
  98. end;
  99.  
  100. procedure TIvTargetPropertiesDialog.AddNew(
  101.   const targetClassName, targetPropertyName: String;
  102.   targetType: TIvTargetType);
  103. var
  104.   i: Integer;
  105. begin
  106.   for i := 0 to List.Items.Count - 1 do
  107.   begin
  108.     if (CompareText(Items[i].TargetClassName, targetClassName) = 0) and
  109.       (CompareText(Items[i].TargetPropertyName, targetPropertyName) = 0) and
  110.       (Items[i].TargetType = targetType) then
  111.     begin
  112.       Exit;
  113.     end;
  114.   end;
  115.  
  116.   { Not found. Adds the target }
  117.  
  118.   AddItem(TIvTargetProperty.Create(targetClassName, targetPropertyName, targetType));
  119. end;
  120.  
  121. procedure TIvTargetPropertiesDialog.AddDefaultButtonClick(Sender: TObject);
  122. begin
  123.   AddNew('', 'Caption', ivttInclude);
  124.   AddNew('', 'Hint', ivttInclude);
  125.   AddNew('', 'Items', ivttInclude);
  126.   UpdateButtons(Self);
  127. end;
  128.  
  129. procedure TIvTargetPropertiesDialog.AddAllButtonClick(Sender: TObject);
  130. begin
  131.   AddDefaultButtonClick(sender);
  132.   AddNew('', 'Lines', ivttInclude);
  133.   AddNew('', 'Hints', ivttInclude);
  134.   AddNew('', 'Tabs', ivttInclude);
  135.   AddNew('', 'DisplayLabel', ivttInclude);
  136.   UpdateButtons(Self);
  137. end;
  138.  
  139. procedure TIvTargetPropertiesDialog.EditButtonClick(Sender: TObject);
  140. var
  141.   item: TIvTargetProperty;
  142.   dialog: TIvTargetPropertyDialog;
  143. begin
  144.   item := List.Items.Objects[List.ItemIndex] as TIvTargetProperty;
  145.   dialog := TIvTargetPropertyDialog.Create(nil);
  146.   dialog.SetItem(item);
  147.   if dialog.ShowModal = mrOk then
  148.   begin
  149.     item.TargetClassName := dialog.ClassNameEdit.Text;
  150.     item.TargetPropertyName := dialog.PropertyNameEdit.Text;
  151.     item.TargetType := TIvTargetType(dialog.TypeRadio.ItemIndex);
  152.     List.Invalidate;
  153.   end;
  154.   dialog.Free;
  155. end;
  156.  
  157. procedure TIvTargetPropertiesDialog.RemoveButtonClick(Sender: TObject);
  158. var
  159.   index: Integer;
  160. begin
  161.   TIvTargetProperty(List.Items.Objects[List.ItemIndex] as TIvTargetProperty).Free;
  162.   index := List.ItemIndex;
  163.   List.Items.Delete(index);
  164.   if List.Items.Count > 0 then
  165.   begin
  166.     if index >= List.Items.Count then
  167.       index := List.Items.Count - 1;
  168.     List.ItemIndex := index;
  169.   end;
  170.   UpdateButtons(Self);
  171. end;
  172.  
  173. procedure TIvTargetPropertiesDialog.UpdateButtons(Sender: TObject);
  174. begin
  175.   EditButton.Enabled := List.ItemIndex <> -1;
  176.   RemoveButton.Enabled := EditButton.Enabled;
  177. end;
  178.  
  179. procedure TIvTargetPropertiesDialog.ListDrawItem(Control: TWinControl;
  180.   Index: Integer; Rect: TRect; State: TOwnerDrawState);
  181. var
  182.   item: TIvTargetProperty;
  183. begin
  184.   item := List.Items.Objects[Index] as TIvTargetProperty;
  185.   List.Canvas.FillRect(Rect);
  186.   List.Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, item.TargetClassName);
  187.   List.Canvas.TextOut(Rect.Left + 122, Rect.Top + 1, item.TargetPropertyName);
  188.   case item.TargetType of
  189.     ivttInclude: List.Canvas.TextOut(Rect.Left + 230, Rect.Top + 1, 'Include');
  190.     ivttExclude: List.Canvas.TextOut(Rect.Left + 230, Rect.Top + 1, 'Exclude');
  191.   end;
  192. end;
  193.  
  194. end.
  195.